package app.maker.stock.impl;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import app.maker.entity.Entrepot;
import app.maker.entity.Fournisseur;
import app.maker.error.EntrepotException;
import app.maker.error.FournisseurException;
import app.maker.stock.intf.IFournisseur;

@Stateless(name = "daoFournisseur")
public class FournisseurImpl implements IFournisseur {
	@PersistenceContext
	private EntityManager em;
	
	public void updateFournisseur(Fournisseur fournisseur) throws FournisseurException {
		if (fournisseur != null)
			em.merge(fournisseur);
		else
			throw new FournisseurException("Fournisseur inexistant!");
	}

	public void deleteFournisseur(Fournisseur fournisseur) throws FournisseurException {
		if (fournisseur != null)
			em.remove(fournisseur);
		else
			throw new FournisseurException("Fournisseur inexistant!");
	}

	public Fournisseur getFournisseur(int id) throws FournisseurException {
		if (id > 0)
			return em.find(Fournisseur.class, id);
		else
			throw new FournisseurException("Identifiant incorrect!");
	}

	@SuppressWarnings("unchecked")
	public List<Fournisseur> getAllFournisseur() {
		return em.createNamedQuery("Fournisseur.findAll").getResultList();
	}

	public Fournisseur getFournisseurByName(String nomFournisseur)
			throws FournisseurException {
		Fournisseur fournisseur = (Fournisseur) em
				.createNamedQuery("Fournisseur.findFournisseurByName")
				.setParameter("param", nomFournisseur).getSingleResult();
		if (fournisseur != null)
			return fournisseur;
		else
			throw new FournisseurException("Fournisseur : " + nomFournisseur
					+ " inexistant !!!");
	}

}
